<?php

/**
 * consultas actions.
 *
 * @package    atenea
 * @subpackage consultas
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 2288 2006-10-02 15:22:13Z fabien $
 */
class consultasActions extends autoconsultasActions
{


  public function executeIndex()
  {
  	$idEs = $this->getRequestParameter('idSol');
  	$this->getUser()->setAttribute('idListaCita',$idEs);
    return $this->forward('consultas', 'create');
  }

  public function executeList()
  {
    $this->processSort();

    $this->processFilters();

    $this->filters = $this->getUser()->getAttributeHolder()->getAll('sf_admin/consulta/filters');

    // pager
    $this->pager = new sfPropelPager('Consulta', 20);
    $c = new Criteria();
    $this->addSortCriteria($c);
    $this->addFiltersCriteria($c);
    $this->pager->setCriteria($c);
    $this->pager->setPage($this->getRequestParameter('page', 1));
    $this->pager->init();
  }

  public function executeCreate()
  {

   //$idSol = $this->getUser()->getAttribute('idListaCita');

    return $this->forward('consultas', 'edit');

  }

  public function executeSave()
  {
    return $this->forward('consultas', 'edit');
  }

  public function executeEdit()
  {



  	//$idSol = $this->getUser()->getAttribute('idListaCita');
    $this->consulta = $this->getConsultaOrCreate();


    if ($this->getRequest()->getMethod() == sfRequest::POST)
    {
      $this->updateConsultaFromRequest();

      $this->saveConsulta($this->consulta);



      $this->setFlash('notice', 'Your modifications have been saved');

      if ($this->getRequestParameter('save_and_add'))
      {
        return $this->redirect('consultas/create');
      }
      else if ($this->getRequestParameter('save_and_list'))
      {
        return $this->redirect('consultas/list');
      }
      else
      {
        return $this->redirect('consultas/edit?id='.$this->consulta->getId());
      }
    }
    else
    {
      $this->labels = $this->getLabels();
    }
  }

  public function executeDelete()
  {
    $this->consulta = ConsultaPeer::retrieveByPk($this->getRequestParameter('id'));
    $this->forward404Unless($this->consulta);

    try
    {
      $this->deleteConsulta($this->consulta);
    }
    catch (PropelException $e)
    {
      $this->getRequest()->setError('delete', 'Could not delete the selected Consulta. Make sure it does not have any associated items.');
      return $this->forward('consultas', 'list');
    }

    return $this->redirect('consultas/list');
  }

  public function executeEspecialistas()
	{
	  if ($this->getRequestParameter('ajax')=='1')
	    {

	    	$c2 = new Criteria();
	    	$c2->add(AteneausuarioPeer::ROL_ID,$this->getRequestParameter('rol'));
	    	$c2->addJoin(AteneausuarioPeer::ID, DatoPersonalPeer::USUARIO_ID);
	        $this->especialistas = DatoPersonalPeer::doSelect($c2);


	  }
	}

  public function executeTrastorno()
	{
	  if ($this->getRequestParameter('ajax')=='1')
	    {

	    	$c2 = new Criteria();
	    	$c2->add(TrastornoPeer::AREA_ID,$this->getRequestParameter('area'));
	    	$this->trastorno = TrastornoPeer::doSelect($c2);

	  }
	}

  public function executeAjax1()
  {
  	//if ($this->getRequestParameter('ajax')=='1')
	  //  {
	    	$c2 = new Criteria();
	    	$c2->add(AteneausuarioPeer::ROL_ID,$this->getRequestParameter('rol'));
	    	$c2->addJoin(AteneausuarioPeer::ID, DatoPersonalPeer::USUARIO_ID);
	        $this->usuarios = DatoPersonalPeer::doSelect($c2);
	    //}

  	 }

  public function executeNombre()
  {


  if ($this->getRequestParameter('ajax')=='1')
	 {

            		$objEstudiante = new Estudiante();
           			$cedula = $this->getRequestParameter('cedula');
            		$datos = $objEstudiante->getDatosDelEstudianteConCed($cedula);
         			$this->estudiante =$datos;
         			if ($datos == null)
         			{
         				$this->setFlash('notice', 'Esta cedula no le pertenece a un estudiante');

         				}
         			else
         			{
						$objUsu = $datos->getObjAteneaUsuarioConCed();
						$this->usuario = $objUsu;

         			}

   }

  }

  public function executeReferncia()
     {
        return $this->redirect('referencias/create');
     }

  public function handleErrorEdit()
  {
    $this->preExecute();
    $this->consulta = $this->getConsultaOrCreate();
    $this->updateConsultaFromRequest();

    $this->labels = $this->getLabels();

    return sfView::SUCCESS;
  }

  protected function saveConsulta($consulta)
  {


    $consulta->save();

  }

  protected function deleteConsulta($consulta)
  {
    $consulta->delete();
  }


  protected function getHistoriaPsicologicaOrCreate($id = 'id')
  {
    if (!$this->getRequestParameter($id))
    {
      $historia_psicologica = new HistoriaPsicologica();
    }
    else
    {
      $historia_psicologica = HistoriaPsicologicaPeer::retrieveByPk($this->getRequestParameter($id));

      $this->forward404Unless($historia_psicologica);
    }

    return $historia_psicologica;
  }


  protected function updateConsultaFromRequest()
  {


    $consulta = $this->getRequestParameter('consulta');

    $consulta['fecha']   = date('Y-m-d');
    $this->consulta->setFecha($consulta['fecha']);


    //Guarda la Historia psicologica perteneciente a la consulta

    $this->historia_psicologica=$this->getHistoriaPsicologicaOrCreate();


  /*
 /*   if (isset($consulta['fecha']))
    {
      if ($consulta['fecha'])
      {
        try
        {
          $dateFormat = new sfDateFormat($this->getUser()->getCulture());
                              if (!is_array($consulta['fecha']))
          {
            $value = $dateFormat->format($consulta['fecha'], 'i', $dateFormat->getInputPattern('d'));
          }
          else
          {
            $value_array = $consulta['fecha'];
            $value = $value_array['year'].'-'.$value_array['month'].'-'.$value_array['day'].(isset($value_array['hour']) ? ' '.$value_array['hour'].':'.$value_array['minute'].(isset($value_array['second']) ? ':'.$value_array['second'] : '') : '');
          }
          $this->consulta->setFecha($value);
        }
        catch (sfException $e)
        {
          // not a date
        }
      }
      else
      {
        $this->consulta->setFecha(null);
      }
    }*/


      $this->consulta->setFecha($consulta['fecha']);
    $consulta['hora']   = date('h:i:s');
    $consulta['entrevistado_por_id'] = $this->getUser()->getAttribute('idsesion');
    $consulta['trastorno_id'] = $this->getRequestParameter('trastorno_id');
    $consulta['hist_psicologica_id']= $this->historia_psicologica->getNumeroFinal();
    $consulta['cita_id']=$this->getUser()->getAttribute('cita_id');
    $consulta['estudiante_id'] = $this->getUser()->getAttribute('estudiante_id');
    $consulta['numero_consulta']= $this->getUser()->getAttribute('numero_consulta');
    $this->historia_psicologica->setFecha($consulta['fecha']);
    $this->historia_psicologica->setSituacionActual($this->getRequestParameter('situacion_actual'));



    if (isset($consulta['motivo_consulta_id']))
    {
    $this->consulta->setMotivoConsultaId($consulta['motivo_consulta_id'] ? $consulta['motivo_consulta_id'] : null);
    }
    if (isset($consulta['conclusiones']))
    {
      $this->consulta->setConclusiones($consulta['conclusiones']);
    }

     $this->historia_psicologica->setConclusiones($consulta['conclusiones']);


    if (isset($consulta['diagnostico_id']))
    {
    $this->consulta->setDiagnosticoId($consulta['diagnostico_id'] ? $consulta['diagnostico_id'] : null);
    }

    if (isset($consulta['hora']))
    {
      $this->consulta->setHora($consulta['hora']);
    }

    if (isset($consulta['estudiante_id']))
    {
    $this->consulta->setEstudianteId($consulta['estudiante_id'] ? $consulta['estudiante_id'] : null);
    }
    if (isset($consulta['entrevistado_por_id']))
    {
    $this->consulta->setEntrevistadoPorId($consulta['entrevistado_por_id'] ? $consulta['entrevistado_por_id'] : null);
    }
    if (isset($consulta['motivo_consulta_id']))
    {
    $this->consulta->setMotivoConsultaId($consulta['motivo_consulta_id'] ? $consulta['motivo_consulta_id'] : null);
    }
    if (isset($consulta['trastorno_id']))
    {
    $this->consulta->setTrastornoId($consulta['trastorno_id'] ? $consulta['trastorno_id'] : null);
    }
    if (isset($consulta['hist_psicologica_id']))
    {
    $this->consulta->setHistPsicologicaId($consulta['hist_psicologica_id'] ? $consulta['hist_psicologica_id'] : null);
    }
    if (isset($consulta['cita_id']))
    {
    $this->consulta->setCitaId($consulta['cita_id'] ? $consulta['cita_id'] : null);
    }
   if (isset($consulta['numero_consulta']))
    {
      $this->consulta->setNumeroConsulta($consulta['numero_consulta']);
    }

    $this->historia_psicologica->save();


  }

  protected function getConsultaOrCreate($id = 'id')
  {
    if (!$this->getRequestParameter($id))
    {
      $consulta = new Consulta();
    }
    else
    {
      $consulta = ConsultaPeer::retrieveByPk($this->getRequestParameter($id));

      $this->forward404Unless($consulta);
    }

    return $consulta;
  }

  protected function processFilters()
  {
    if ($this->getRequest()->hasParameter('filter'))
    {
      $filters = $this->getRequestParameter('filters');

      $this->getUser()->getAttributeHolder()->removeNamespace('sf_admin/consulta/filters');
      $this->getUser()->getAttributeHolder()->add($filters, 'sf_admin/consulta/filters');
    }
  }

  protected function processSort()
  {
    if ($this->getRequestParameter('sort'))
    {
      $this->getUser()->setAttribute('sort', $this->getRequestParameter('sort'), 'sf_admin/consulta/sort');
      $this->getUser()->setAttribute('type', $this->getRequestParameter('type', 'asc'), 'sf_admin/consulta/sort');
    }

    if (!$this->getUser()->getAttribute('sort', null, 'sf_admin/consulta/sort'))
    {
    }
  }

  protected function addFiltersCriteria($c)
  {
    if (isset($this->filters['estudiante_id_is_empty']))
    {
      $criterion = $c->getNewCriterion(ConsultaPeer::ESTUDIANTE_ID, '');
      $criterion->addOr($c->getNewCriterion(ConsultaPeer::ESTUDIANTE_ID, null, Criteria::ISNULL));
      $c->add($criterion);
    }
    else if (isset($this->filters['estudiante_id']) && $this->filters['estudiante_id'] !== '')
    {
      $c->add(ConsultaPeer::ESTUDIANTE_ID, $this->filters['estudiante_id']);
    }
  }

  protected function addSortCriteria($c)
  {
    if ($sort_column = $this->getUser()->getAttribute('sort', null, 'sf_admin/consulta/sort'))
    {
      $sort_column = ConsultaPeer::translateFieldName($sort_column, BasePeer::TYPE_FIELDNAME, BasePeer::TYPE_COLNAME);
      if ($this->getUser()->getAttribute('type', null, 'sf_admin/consulta/sort') == 'asc')
      {
        $c->addAscendingOrderByColumn($sort_column);
      }
      else
      {
        $c->addDescendingOrderByColumn($sort_column);
      }
    }
  }

  protected function getLabels()
  {
    return array(
      'consulta{numero_consulta}' => 'Numero:',
      'consulta{estudiante_id}' => 'Cedula:',
      'consulta{referido_a}' => 'Referido a:',
      'consulta{motivo_consulta_id}' => 'Motivo de la Consulta:',
      'consulta{conclusiones}' => 'Conclusiones:',
      'consulta{diagnostico_id}' => 'Diagnostico:',
      'consulta{trastorno_id}' => 'Trastorno:',
    );
  }

}
